package jdbc;

import com.mysql.cj.jdbc.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class demo {
    public static void main(String[] args) throws SQLException {

        //第一步：创建数据库
        //方法一：（常用）,更好的降低解耦合，便于切换数据库
        DataSource dataSource=new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java118?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("admin");

        //方法二：更方便直接确定使用一种数据库
//        MysqlDataSource dataSource1=new MysqlDataSource();
//        dataSource1.setUrl();
        //......

        //第二步：和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

        //第三步：使用Java构建出sql字符串发送到MySQL

        //以下的values可以采用Scanner进行字符串拼接插入
        Scanner sc=new Scanner(System.in);
        int id=sc.nextInt();
        sc.nextLine();
        String name=sc.nextLine();
        String gender=sc.nextLine();
        int age=sc.nextInt();
        sc.nextLine();
        String college=sc.nextLine();

        //以下可以用字符串拼接
        //String sql="insert into student values(11,'小夫','男',20,'软件工程')";//双引号得转义11,\"小夫\",\"男\",20,\"软件工程\"

        String sql="insert into student values(?,?,?,?,?)";
        PreparedStatement statement=connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        statement.setString(3,gender);
        statement.setInt(4,age);
        statement.setString(5,college);

        //第四部：语句发送给服务器去
        //n表示影响到多少行
        int n=statement.executeUpdate();
        System.out.println("n="+n);

        //第五步：释放上述资源，释放顺序和创建顺序相反
        statement.close();
        connection.close();
    }
}
